In [1]:
# 用循环来生成
list1 = []
for x in range(1, 11):
list1.append(x * x)
print(list1)
In [2]:
# 用列表生成式
# 是不是更加简洁和优雅?
list1 = [ x * x for x in range(1, 11)]
print(list1)
In [2]:
# 在列表生成式后面加上判断,过滤出结果为偶数的结果
[x * x for x in range(1, 11) if x % 2 == 0 ]
Out[2]:
In [3]:
# 可以在列表生成式中使用双重循环
# 输出一对元组,每个数在10以内,且加在一起等于5
list1 = [(x, y) for x in range(10) for y in range(10) if x + y == 5 if x > y]
print(list1)
In [6]:
# 改进之前寻找目录下指定字母开头的文件的判断方式
# 修改为使用列表生成式
import os
# 可以判断各类情况,比如第一个是大写的 P 字母, 用列表生成式的方式,代码精简了很多
list1 = [x for x in os.listdir('/Users/yijun') if x[0:1] == 'P']
print(list1)
In [20]:
# zip 对象没有办法直接显示其内容,因为它也是一个可迭代的对象
list1 = zip(range(5),'hello')
print(list1)
In [16]:
# 我们用循环来读取 zip 输出的内容
for k,v in zip(range(5),'hello'):
print(k,v)
In [8]:
# 用列表生成式来生成字典
s = 'hello world'
dict1 = {k:v for (k,v) in zip(range(11),s)}
print(dict1)
In [24]:
# 将矩阵降维
def list_flatten(matrix):
return [x for row in matrix for x in row]
matrix = [range(0,5),range(5,10),range(10,15)]
print(matrix)
print(list_flatten(matrix))
In [22]:
# 也可以直接使用 dict() 类型转换,因为这里逻辑比较简单
dict1 = dict(zip(range(11),s))
print(dict1)